식별자¶
식별자 작성 원칙¶
테이블 이름, 인덱스 이름, 뷰 이름, 칼럼 이름, 사용자 이름 등이 식별자에 해당한다. 식별자는 다음의 원칙에 따라 작성해야 한다.
- 반드시 문자로 시작되어야 한다. 즉, 숫자나 기호로 시작할 수 없다.
- 대소문자를 구별하지 않는다.
- 예약어는 허용되지 않는다.
identifier ::= identifier_letter [ { other_identifier }; ] identifier_letter ::= upper_case_letter | lower_case_letter other_identifier ::= identifier_letter | digit | _ | # digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 upper_case_letter ::= A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P| Q | R | S | T | U | V | W | X | Y | Z lower_case_letter ::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p| q | r | s | t | u | v | w | x | y | z
허용되는 식별자¶
문자로 시작되는 식별자
식별자의 첫 글자에는 반드시 문자를 사용해야 하며, 연산자로 사용되는 특수 문자를 제외한 나머지 특수 문자를 포함할 수 있다. 다음은 허용되는 식별자의 예제이다.
a a_b ssn# this_is_an_example_#
큰따옴표, 대괄호, 백틱 부호로 둘러싸인 식별자
허용되지 않는 식별자 또는 예약어에 해당하더라도, 큰따옴표(" ")나 대괄호([ ]) 또는 백틱 부호(` `)로 식별자를 둘러싸면 예외적으로 허용된다. 큰따옴표는 질의 관련 파라미터인 ansi_quotes가 yes일 때에만 식별자를 감싸는 부호로 사용할 수 있고, 이 값이 no이면 문자열을 감싸는 부호로 사용한다. ansi_quotes의 기본값은 yes이다. 다음은 허용되는 식별자의 예제이다.
"select" "@lowcost" "low cost" "abc""def" [position]
허용되지 않는 식별자¶
특수 문자나 숫자로 시작되는 식별자
다음과 같이 언더바(_), #을 제외한 특수 문자, 숫자로 시작되는 식별자는 허용되지 않는다.
_a #ack %nums 2fer 88abs
공백을 포함하는 식별자
다음과 같이 중간에 공백을 포함하는 식별자는 허용되지 않는다.
col1 t1
연산자로 사용하는 특수 문자를 포함하는 식별자
다음과 같이 연산자로 사용되는 특수 문자(+, -, *, /, %, ||, !, <, >, =, |, ^, &, ~)를 포함하는 식별자는 허용되지 않는다.
col+ col~ col&&
식별자 이름의 최대 길이¶
다음은 각 식별자 이름으로 허용되는 최대 바이트 길이를 정리한 표이다. 단위는 바이트 길이이며, 사용하는 문자셋에 따라 문자 수와 바이트 길이는 다를 수 있음에 주의한다. (예를 들어, UTF-8 문자셋에서 한글 한 글자는 3바이트의 바이트 길이이다.)
식별자 | 최대 바이트 길이 |
---|---|
Database | 17 |
Table | 254 |
Column | 254 |
Index | 254 |
Constraint | 254 |
Java Stored Procedure | 254 |
Trigger | 254 |
View | 254 |
Serial | 254 |
Note
기본 키(pk_<table_name>_<column_name>), 외래 키(fk_<table_name>_<column_name>)의 이름 등 자동으로 생성되는 제약조건(constraint) 이름도 식별자의 최대 길이인 254바이트를 넘을 수 없다.